/**
 * @author liuxin
 * @e-mail lxtobe5@gmail.com
 * @update 2011.11.19
 * @prompt If you find my mistake, please contact with me via my e-mail.
 */
package API_sample.TopLevel_samples.GlobalFunctions_samples
{
	import flash.display.Sprite;
	
	/**
	 * 解读decodeURI() encodeURI() decodeURIComponent() encodeURIcomponent() 
	 */	
	public class decodeURI_encodeURI_decodeURIComponent_encodeURIComponent extends Sprite
	{
		public function decodeURI_encodeURI_decodeURIComponent_encodeURIComponent()
		{
			var uri:String = "http://www.example.com/application.jsp?user=<user name='some user'></user>";
            
			encodeURI_sample(uri);
			decodeURI_sample(encodeURI(uri));
			encodeURIComponent_sample(uri);
			decodeURIComponent_sample(encodeURIComponent(uri));
			decodeURIComponent_sample(encodeURI(uri));
		}
		
		/**
		 * encodeURI(uri:String):String
		 * 参数		uri:String — 一个表示完整 URI 的字符串。
		 * 返回		String — 一个字符串，其中某些字符已编码为 UTF-8 转义序列。
		 * 将字符串编码为有效的 URI（统一资源标识符）。将完整的 URI 转换为一个字符串，其中除属于一小组基本字符的字符外，
		 * 其他所有字符都以 UTF-8 转义序列进行编码。
		 * 下表显示不会 由 encodeURI 函数转换为 UTF-8 转义序列的基本字符的整个集合。
		 * 未编码的字符
		 * 0 1 2 3 4 5 6 7 8 9
		 * a b c d e f g h i j k l m n o p q r s t u v w x y z
		 * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
		 * ; / ? : @ & = + $ , #
		 * - _ . ! ~ * ' ( )
		 */		
		private function encodeURI_sample(uri:String):void
		{
			trace(encodeURI(uri));
			// http://www.example.com/application.jsp?user=%3Cuser%20name='some%20user'%3E%3C/user%3E
		}
		
		/**
		 * decodeURI(uri:String):String
		 * 参数    	uri:String — 一个使用 encodeURI 函数编码的字符串。
		 * 返回             String — 一个字符串，其中以前由 encodeURI 函数转义的所有字符都还原为它们的未转义表示形式。
		 * 将已编码的 URI 解码为字符串。返回一个字符串，其中以前由 encodeURI 函数编码的所有字符都还原为它们的未编码表
		 * 示形式。
		 * 下表显示不会 由 decodeURI 函数解码为字符的转义序列的集合。使用 decodeURIComponent() 可解码此表中的转义序列。
		 * 未解码的转义序列	字符等效形式
		 * %23 #    %24 $   %26 &   %2B +   %2C ,   %2F /   %3A :   %3B ;   %3D =   %3F ?   %40 @
		 */		
		private function decodeURI_sample(uri:String):void
		{
			trace(decodeURI(uri));
			// http://www.example.com/application.jsp?user=<user name='some user'></user>
		}
		
		/**
		 * encodeURIComponent(uri:String):String
		 * 参数              uri:String — 一个表示完整 URI 的字符串。
		 * 返回              String — 一个字符串，其中某些字符已编码为 UTF-8 转义序列。
		 * 将字符串编码为有效的 URI 组件。将 URI 的子字符串转换为一个字符串，其中除属于非常小的一组基本字符的字符外，
		 * 其他所有字符都以 UTF-8 转义序列进行编码。encodeURIComponent() 函数与 encodeURI() 函数不同，它仅适用于 URI
		 *  字符串的一部分（称为 URI 组件）。URI 组件是指出现在某些特殊字符之间的任何文本，这些特殊字符称为组件分隔符
		 * （: / ; 和 ?）。“http”和“www.adobe.com”是常见的 URI 组件示例。此函数与 encodeURI() 的另一个重要区别是：
		 * 由于此函数假定它处理的是 URI 组件，因此它会将特殊分隔符字符 (; / ? : @ & = + $ , #) 视为应进行编码的常规文本。
		 * 下表显示不会 由 encodeURIComponent 函数转换为 UTF-8 转义序列的所有字符。
		 * 未编码的字符
		 * 0 1 2 3 4 5 6 7 8 9
		 * a b c d e f g h i j k l m n o p q r s t u v w x y z
		 * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
		 * - _ . ! ~ * ' ( )
		 */
		private function encodeURIComponent_sample(uri:String):void
		{
			trace(encodeURIComponent(uri));
			//http%3A%2F%2Fwww.example.com%2Fapplication.jsp%3Fuser%3D%3Cuser%20name%3D'some%20user'%3E%3C%2Fuser%3E
		}
		
		/**
		 * decodeURIComponent(uri:String):String
		 * 参数             uri:String — 一个使用 encodeURIComponent 函数编码的字符串。
		 * 返回            String — 一个字符串，其中以前由 encodeURIComponent 函数转义的所有字符都还原为它们的未转义表示形式。
		 * 将已编码的 URI 组件解码为字符串。返回一个字符串，其中以前由 encodeURIComponent 函数转义的所有字符都还原为
		 * 它们的未编码表示形式。此函数与 decodeURI() 函数不同，它仅适用于 URI 字符串的一部分（称为 URI 组件）。URI 
		 * 组件是指出现在某些特殊字符之间的任何文本，这些特殊字符称为组件分隔符（: / ; 和 ?）。“http”和“www.adobe.
		 * com”是常见的 URI 组件示例。
		 * 此函数与 decodeURI() 的另一个重要区别是：由于此函数假定它处理的是 URI 组件，因此它会将表示特殊分隔符字符
		 *  (; / ? : @ & = + $ , #) 的转义序列视为应进行解码的常规文本。
		 */
		private function decodeURIComponent_sample(uri:String):void
		{
			trace(decodeURIComponent(uri));
			// http://www.example.com/application.jsp?user=<user name='some user'></user>
		}
	}
}